// 用户信息存储工具类
export default class UserStorage {
  static USER_INFO_KEY = 'userInfo'
  static TOKEN_KEY = 'token'

  /**
   * 保存用户信息到localStorage
   * @param {Object} userInfo 用户信息对象
   */
  static saveUserInfo(userInfo) {
    localStorage.setItem(this.USER_INFO_KEY, JSON.stringify(userInfo))
  }

  /**
   * 从localStorage获取用户信息
   * @returns {Object|null} 用户信息对象，如果没有则返回null
   */
  static getUserInfo() {
    const userInfoStr = localStorage.getItem(this.USER_INFO_KEY)
    return userInfoStr ? JSON.parse(userInfoStr) : null
  }

  /**
   * 保存token到localStorage
   * @param {string} token 用户token
   */
  static saveToken(token) {
    localStorage.setItem(this.TOKEN_KEY, token)
  }

  /**
   * 从localStorage获取token
   * @returns {string|null} 用户token，如果没有则返回null
   */
  static getToken() {
    return localStorage.getItem(this.TOKEN_KEY)
  }

  /**
   * 更新用户头像URL
   * @param {string} avatarUrl 新的头像URL
   */
  static updateAvatarUrl(avatarUrl) {
    const userInfo = this.getUserInfo()
    if (userInfo) {
      userInfo.avatarUrl = avatarUrl
      this.saveUserInfo(userInfo)
    }
  }

  /**
   * 更新用户基本信息
   * @param {Object} updates 要更新的字段
   */
  static updateUserInfo(updates) {
    const userInfo = this.getUserInfo()
    if (userInfo) {
      Object.assign(userInfo, updates)
      this.saveUserInfo(userInfo)
    }
  }

  /**
   * 清除所有用户信息
   */
  static clearUserInfo() {
    localStorage.removeItem(this.USER_INFO_KEY)
    localStorage.removeItem(this.TOKEN_KEY)
  }

  /**
   * 检查用户是否已登录
   * @returns {boolean} 是否已登录
   */
  static isLoggedIn() {
    return !!(this.getToken() && this.getUserInfo())
  }

  /**
   * 获取用户ID
   * @returns {number|null} 用户ID
   */
  static getUserId() {
    const userInfo = this.getUserInfo()
    return userInfo ? userInfo.id : null
  }

  /**
   * 获取用户名
   * @returns {string|null} 用户名
   */
  static getUsername() {
    const userInfo = this.getUserInfo()
    return userInfo ? userInfo.username : null
  }
} 